package com.yuw.service.impl;

import com.yuw.bean.UserInfoBean;
import com.yuw.dao.UserInfoBeanMapper;
import com.yuw.service.IUserInfoService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import javax.annotation.Resources;
import java.util.List;

@Service
public class UserInfoServiceImpl implements IUserInfoService {
    // 使用依赖注入，注入dao层的实例对象【dao层接口的实现类的实例对象---mybatis框架内容使用类似动态代理的模式进行实现】
    @Resource
    private UserInfoBeanMapper userInfoBeanMapper;

    @Override
    public boolean isLogined(UserInfoBean userInfoBean) {
        // 登录验证结果
        boolean isOK = false;
        // 调用dao层进行数据库操作，验证登录信息是否合法
        List<UserInfoBean> lstUserInfos = userInfoBeanMapper.selectLoginedUserInfo(userInfoBean);
        // 验证用户信息是否登录成功
        if (lstUserInfos != null && lstUserInfos.size() > 0) {
            // 查询到了用户信息，登录成功
            isOK = true;
        }
        return isOK;
    }

    @Override
    public List<UserInfoBean> getUserInfoByParams(UserInfoBean userB) {
        // 调用dao层进行数据库查询处理
        List<UserInfoBean> lst = userInfoBeanMapper.getUserInfoByParams(userB);
        return lst;
    }

    @Override
    public int saveOrUpdateUserInfo(UserInfoBean userInfoBean) {
        // 默认返回值
        int i = 0;
        // 调用dao层进行数据库查询处理
        // 新增或者修改的业务逻辑处理
        // 新增和修改在一起完成，区别的范式是：参数实体类中是否含有主键字段，
        // 如果有主键字段，则是修改操作；如果没有主键字段，则是新增操作
        if (userInfoBean != null && userInfoBean.getUserid() != null) {
            // 参数实体类的主键字段不为null，则为修改操作操作
            // TODO 调用dao层的修改操作完成修改业务逻辑
        } else {
            // 调用dao层进行新增操作
            i = userInfoBeanMapper.insertSelective(userInfoBean);
        }
        // 返回值
        return i;
    }
}
